#ifndef __MATRIZ_ADYACENCIA_H__
#define __MATRIZ_ADYACENCIA_H__

#include <map>
#include "MateriaPriorizada.h"

namespace modelo {

	typedef map<string, bool> MatrizCorrelatividades;

	class MatrizAdyacencia
	{
	public:
		MatrizAdyacencia(list<InformacionMateria*> informacionMaterias);
		~MatrizAdyacencia(void);

		void CalcularRequisitosParaCursar(InformacionMateriaSegunCarrera* informacionMateria);
		void CalcularMateriasPosterioresPara(InformacionMateriaSegunCarrera* informacionMateria);
		void RegistrarCorrelativa(string codigoMateria, string codigoCorrelativa);
		int SumarCorrelativasPara(string codigoMateria);

	private:
		MatrizCorrelatividades matrizCodigos;

		void Inicializar(list<InformacionMateria*> informacionMaterias);
		string ConstruirKey(string codigoBase, string codigoCorrelativa);

	};
}
#endif